// 首先确保已加载 PageOS 登录扩展
// 然后在角色中创建以下变量：
// - 服务器地址 (默认值: "ws://127.0.0.1:12801/ws")
// - 用户名
// - 密码
// - 环境变量 (默认值: "LANG=zh_CN.UTF-8")
// - 启动命令 (默认值: "pageos-core")
// - 状态信息
// - 日志内容

// 主控制脚本
当 ⚑ 被点击
  清空日志
  将 [服务器地址] 设为 [ws://127.0.0.1:12801/ws]
  将 [状态信息] 设为 [准备连接...]
  更新界面 // 自定义积木
  连接 [服务器地址] // 使用扩展积木

// 连接建立时的处理
当建立连接 // 扩展的帽子积木
  将 [状态信息] 设为 [已连接，请输入用户名]
  更新界面
  显示用户名输入界面 // 自定义积木

// 收到消息时的处理
当收到信息 // 扩展的帽子积木
  如果 <(获取提示信息类型) = [auth_prompt]> 那么
    如果 <(获取提示信息) 包含 [密码]> 那么
      将 [状态信息] 设为 [请输入密码]
      显示密码输入界面 // 自定义积木
    否则
      将 [状态信息] 设为 [获取提示信息]
      显示通用输入界面 // 自定义积木
    结束
  否则
    如果 <(获取提示信息类型) = [auth_success]> 那么
      将 [状态信息] 设为 [认证成功!]
      更新界面
      等待 (1) 秒
      发送启动会话响应 环境变量 [环境变量] 启动命令 [启动命令] // 使用扩展积木
    否则
      如果 <(获取提示信息类型) = [auth_error]> 那么
        将 [状态信息] 设为 [连接 [认证失败: ] (获取提示信息)]
        更新界面
        等待 (2) 秒
        重置登录界面 // 自定义积木
      结束
    结束
  结束

// 连接错误处理
当发生连接错误 // 扩展的帽子积木
  将 [状态信息] 设为 [连接错误，正在重试...]
  更新界面
  等待 (3) 秒
  连接 [服务器地址] // 重试连接

// 连接关闭处理
当连接关闭 // 扩展的帽子积木
  将 [状态信息] 设为 [连接已关闭]
  更新界面
  等待 (2) 秒
  重置登录界面

// 自定义积木: 更新界面
定义 更新界面
  清空 // 清除舞台上的所有图形元素
  绘制界面框架 // 绘制登录框背景
  绘制状态指示器 // 根据连接状态显示不同颜色
  显示日志 // 显示最近的日志条目

// 自定义积木: 显示用户名输入界面
定义 显示用户名输入界面
  绘制文本 [用户名:] 在位置 x: (-100) y: (20)
  创建用户名输入框在 x: (0) y: (20) // 实际项目中需使用自制积木实现输入框
  创建按钮 [提交] 在 x: (80) y: (20) // 点击时调用"处理用户名提交"

// 自定义积木: 显示密码输入界面
定义 显示密码输入界面
  绘制文本 [密码:] 在位置 x: (-100) y: (20)
  创建密码输入框在 x: (0) y: (20) // 显示为星号
  创建按钮 [提交] 在 x: (80) y: (20) // 点击时调用"处理密码提交"

// 自定义积木: 处理用户名提交
定义 处理用户名提交
  将 [用户名] 设为 [用户名输入框的值]
  发送验证请求 [用户名] // 使用扩展积木
  将 [状态信息] 设为 [正在验证用户名...]
  更新界面

// 自定义积木: 处理密码提交
定义 处理密码提交
  将 [密码] 设为 [密码输入框的值]
  发送认证响应 [密码] // 使用扩展积木
  将 [状态信息] 设为 [正在验证密码...]
  更新界面

// 自定义积木: 重置登录界面
定义 重置登录界面
  将 [用户名] 设为 []
  将 [密码] 设为 []
  将 [状态信息] 设为 [准备重新连接...]
  更新界面
  连接 [服务器地址] // 重新连接

// 自定义积木: 显示日志
定义 显示日志
  将 [日志内容] 设为 (获取日志信息) // 使用扩展积木
  绘制文本 [日志:] 在位置 x: (-180) y: (-80)
  绘制多行文本 [日志内容] 在位置 x: (-180) y: (-100) 宽度 (360) 高度 (80) // 带滚动条

// 自定义积木: 绘制状态指示器
定义 绘制状态指示器
  如果 <(已连接？)> 那么
    绘制圆形 x: (180) y: (140) 半径 (15) 颜色 [#00FF00] // 绿色表示已连接
  否则
    如果 <(正在加载中？)> 那么
      绘制圆形 x: (180) y: (140) 半径 (15) 颜色 [#FFFF00] // 黄色表示加载中
    否则
      绘制圆形 x: (180) y: (140) 半径 (15) 颜色 [#FF0000] // 红色表示断开
    结束
  结束
